//network/request.js文件
 
import base from './baseUrl.js'
 
export default class Request {
  http(param) {
    // 请求参数
    let url = param.url;
    let method = param.method;
    let header = param.header || {};
    let data = Object.assign(param.data || {});
    let hideLoading = param.hideLoading || false;
    let whetherData = param.whetherData;
    //拼接完整请求地址
    let requestUrl = process.env.NODE_ENV === 'development' ? `/inSpace${url}` : base.mapUrl + url;
 
    //请求方式:GET或POST(POST需配置
    // header: {'content-type' : "application/x-www-form-urlencoded"},)
    if (method) {
      method = method.toUpperCase(); //小写改为大写
      if (method == "POST") {
        header = Object.assign({
          'content-type': "application/x-www-form-urlencoded"
          // 'content-type': "application/json"
        }, param.header, {
          Token: uni.getStorageSync("token")
        })
      } else {
        header = Object.assign({
          'content-type': "application/json"
        }, param.header, {
          Token: uni.getStorageSync("token")
        })
      }
    }
    //加载圈
    if (!hideLoading) {
      uni.showLoading({})
    }
    // 返回promise
    return new Promise((resolve, reject) => {
      // 请求
      uni.request({
        url: requestUrl,
        data: data,
        method: method,
        header: header,
        success: (res) => {
          // console.log('拦截器',res);
          //隐藏加载
          if (!hideLoading) {
            uni.hideLoading();
          }
          // 判断 请求是否成功 
          if (res.statusCode == 200) {
            //判断  接口返回列表中是否存在 data 列表 （因为接口不统一所以从这里判断 promise返回什么数据）
            if (whetherData) {
              // code判断:1成功,不等于1错误
              if (res.data.code == 1) {
                //成功            
                resolve(res.data)
                return true;
              } else {
                if (res.data.code == 2||res.data.code==10015) {
                  uni.removeStorageSync("token")
                  // #ifndef MP-WEIXIN
                  uni.navigateTo({
                    url: '/pages/login/login'
                  })
                  // #endif
                  // #ifdef MP-WEIXIN
                  // toast('请前往登录')
                  uni.switchTab({
                    url:'/pages/login/login'
                  })
                  // #endif
                }
                // console.log("错误", res.data);
                uni.showToast({
                  title:res.data.msg,
                  icon:'none'
                })
                return false;
              }
            } else {
              console.log('不判断', res.data);
              resolve(res.data)
              return true;
            }
          } else {
            return false;
          }
        },
        //请求失败
        fail: (err) => {
          console.log('请求失败', err);
          //隐藏加载
          if (!hideLoading) {
            uni.hideLoading();
          }
          return false;
        },
        //请求完成
        complete() {
          return;
        }
      })
    })
  }
}